package cn.rkylin.oms.order.dao;

import cn.rkylin.core.IDataBaseFactory;
import cn.rkylin.oms.order.vo.OrderSkuVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Repository(value = "orderSkuDAO")
public class OrderSkuDAOImpl implements IOrderSkuDAO {

    @Autowired
    protected IDataBaseFactory dao;

    /**
     * 构造函数
     */
    public OrderSkuDAOImpl() {

    }

    @Override
    public int insert(OrderSkuVO orderSkuVO) throws Exception {
        // TODO Auto-generated method stub
        return dao.insert("insertSelectiveOrderSku", orderSkuVO);
    }

    @Override
    public List<OrderSkuVO> getOrderSkuList(OrderSkuVO orderSkuVO) throws Exception {
        // TODO Auto-generated method stub
        return dao.findAllList("selectOrderSku", orderSkuVO);
    }

    @Override
    public int update(OrderSkuVO orderSkuVO) throws Exception {
        // TODO Auto-generated method stub
        return dao.insert("updateByPrimaryKeySelectiveOrderSku", orderSkuVO);
    }

    @Override
    public int updateByCondition(OrderSkuVO orderSkuVO) throws Exception {
        return dao.insert("updateOrderSku", orderSkuVO);
    }
    
    @Override
    public int replaceByCondition(OrderSkuVO orderSkuVO) throws Exception {
        return dao.insert("updateOrderSku4Replace", orderSkuVO);
    }

    @Override
    public List<OrderSkuVO> selectByOrderIdSysOrderSkuQty(String orderId) throws Exception {
        return dao.find("selectByOrderIdSysOrderSkuQty", orderId);
    }

    /**
     * @throws Exception
     * @see cn.rkylin.oms.order.dao.IOrderSkuDAO#getOrderSkuList(java.lang.String)
     */
    @Override
    public List<OrderSkuVO> getOrderSkuList(String refundId) throws Exception {
        return dao.find("selectOrderSkuByRefundId", refundId);
    }

    /**
     * 退货单加载 订单商品以及订单关联补发单的商品
     *
     * @param orderId
     * @return
     * @throws Exception
     */
    @Override
    public List<OrderSkuVO> getOrderSkuAndResendSkuByOrderId(String orderId) throws Exception {
        return dao.find("selectOrderSkuAndResendSkuByOrderId", orderId);
    }

    /**
     * 查询订单未分派的商品
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    @Override
    public List<OrderSkuVO> getOrderSkuListForNotAllot(OrderSkuVO orderSkuVO) throws Exception {
        return dao.findAllList("selectOrderSkuNotAllot", orderSkuVO);
    }

    /**
     * 校验待审核状态下的订单平台规格
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    @Override
    public List<OrderSkuVO> getOrderSkuWaitVerifyList(OrderSkuVO orderSkuVO) throws Exception {
        // TODO Auto-generated method stub
        return dao.findAllList("selectOrderSkuAndOrderWaitVerity", orderSkuVO);
    }

    /**
     * 平台商品关联系统商品同时更新待审核订单商品的系统商品
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    @Override
    public int updateOrderSkuForEcSku(OrderSkuVO orderSkuVO) throws Exception {
        return dao.update("updateOrderSkuForEcSku", orderSkuVO);
    }

    /**
     * 获取系统订单商品明细
     *
     * @param orderSkuId
     * @return
     * @throws Exception
     */
    @Override
    public OrderSkuVO selectByPrimaryKeyOrderSku(String orderSkuId) throws Exception {
        List<OrderSkuVO> orderSkuVOList = dao.findList("selectByPrimaryKeyOrderSku", orderSkuId);
        if (orderSkuVOList != null && orderSkuVOList.size() > 0) {
            return orderSkuVOList.get(0);
        }
        return null;
    }
}
